﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BLToolkit.Data;
using  BLToolkit.DataAccess;
using BLToolkit.Mapping;
using Devsoft.DB.Models;

namespace Platform.Model
{
	/// <summary>
	/// Lớp biểu diễn mặt hàng
	/// </summary>
    [TableName("Article")]
    public class Article:Devsoft.DB.Models.Flat.ModelWithIdAndManager<Article, ArticleManager>
    {
		/// <summary>
		/// Mã số mặt hàng (theo quy định của từng siêu thị)
		/// </summary>
        public string ArtNo { get; set; }

		/// <summary>
		/// Mã số siêu thị
		/// </summary>
        public int MarketId { get; set; }

		/// <summary>
		/// Tên mặt hàng
		/// </summary>
        public string ArtName { get; set; }

		/// <summary>
		/// Loại mặt hàng (có giá trị từ 1 đến 4)
		/// </summary>
        public int Cat { get; set; }

		/// <summary>
		/// Tỉ số chuyển đổi đơn vị đo
		/// </summary>
        public float Unit { get; set; }

		/// <summary>
		/// Thời điểm cập nhật cuối cùng
		/// </summary>
        public DateTime LastUpdated { get; set; }

		/// <summary>
		/// Thông tin về siêu thị mua mặt hàng này
		/// </summary>
        [Association(ThisKey = "MarketId" ,OtherKey = "Id",CanBeNull = false)]
        public Market Market { get; set; }
        
        /// <summary>
        /// Thông tin dữ liệu cân hàng các sản phẩm
        /// </summary>
        [Association(ThisKey = "Id", OtherKey = "ArtId", CanBeNull = false)]
        public PickingList PickingList { get; set; }
        /// <summary>
        /// các sản phẩm đưa vào kho lạnh
        /// </summary>
        [Association(ThisKey = "Id",OtherKey = "ArtId",CanBeNull = false)]
        public Stock Stock { get; set; }
    }

	public abstract class ArticleManager : Manager<Article>
	{
		public ArticleManager(DbManager dbManager) : base(dbManager)
		{
		}

		public abstract void DeleteById(int artId);
	   
	}
}
